/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package swing.modelos;

import hibernate.entidades.DetallePedCli;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Currency;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author ariel
 */
public class ModeloDetallesPedidoCliente extends AbstractTableModel {

    private ArrayList<DetallePedCli> detalles = new ArrayList();
    String[] columnas = new String[]{"línea", "Código", "Nombre", "Precio", "Cantidad"};

    public ArrayList<DetallePedCli> getDetalles() {
        return detalles;
    }

    public void setDetalles(ArrayList<DetallePedCli> detalles) {
        this.detalles = detalles;
    }

    @Override
    public String getColumnName(int column) {
        return columnas[column];
    }

    @Override
    public int getRowCount() {
        return detalles.size();
    }

    @Override
    public int getColumnCount() {
        return columnas.length;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        DetallePedCli detalle = detalles.get(rowIndex);
        String[] valores = new String[]{String.valueOf(detalle.getDetallePedCliPK().getLinea()), 
            detalle.getCodStock().getCodStock(), 
            detalle.getCodStock().getNombre(), 
            String.valueOf(detalle.getPrecio()), //Manejamos el precio guardado en la Venta.
            String.valueOf(detalle.getCantidad())};
        return valores[columnIndex];
    }

    public void addDetalle(DetallePedCli detalle) {
        this.detalles.add(detalle);
        fireTableDataChanged();
    }

    public void removeDetalle(int index) {
        this.detalles.remove(index);
        fireTableDataChanged();
    }
    
    public short reordenarLineas(){
        short x = 1;
        for(DetallePedCli y:  detalles){
            y.getDetallePedCliPK().setLinea(x);
            x++;
        }
        fireTableDataChanged();
        return (short) x;
        
    }

    public void setClavePedido(Integer codPedCli) {
        for(DetallePedCli y: detalles){
            y.getDetallePedCliPK().setCodPedCli(codPedCli);
        }
    }
    public DetallePedCli getRow(int index){
        return detalles.get(index);
    }
    
    public double getTotal(){
        double total = 0;
        for(DetallePedCli y: detalles){
            double doubleValue = y.getPrecio();
            total += (doubleValue) * y.getCantidad();
        }
        return total;
    }
}
